/**
 *@html common.singlePopup
 *@description 通用单选弹出框js实现
 *
 *@since 2011-11-17
 */
Ccay.Module.define("Ccay.Component.SinglePopup",function(page,$S){
	//debugger;
	/**
	 * 单选弹出框页面初始化
	 */
	var popupBean="",servicePath="";
	var leftGrid="";
	
	function API(){
		return $S("#leftGrid").getCcayGridManager();
	}
	page.init=function(bean){
		
		$S("input.ccay-dialog-button.cancel").val($i18n("ccay.common.label.close"));
		popupBean=bean;
		//如果实现了自定条件区域，则跳用其方法，否则通过列来生成搜索条件区域
		if( typeof(bean.condRender) === "function" ){
			$S("#popup_cond_div").html(bean.condRender());
			//$S("#popup_cond_div").append("<input id='btn_popup_single' type='button'  onclick='Ccay.Component.SinglePopup.search()' value='"+$.i18n.prop("ccay.common.button.search")+"' class='button  default' />&nbsp;&nbsp;<INPUT  type='button' onclick='Ccay.Component.SinglePopup.reset()' class='button'  value='"+$.i18n.prop("ccay.common.button.clear")+"' />");
			$S("#popup_cond_div").append("<span id='btn_popup_single' class='default ccay-button' onclick='Ccay.Component.SinglePopup.search()'><a class='ccay-icon search'></a><label>"+$i18n("ccay.common.button.search")+"</label></span>");
			$S("#popup_cond_div").append("<span class='ccay-button' onclick='Ccay.Component.SinglePopup.reset()'><a class='ccay-icon reset'></a><label>"+$.i18n.prop("ccay.common.button.clear")+"</label></span>");
		}else{
			initConditionArea(bean.columns,bean.buttonPosition);
		}

		if( typeof(bean.initRender) === "function" ){
			bean.initRender($S("#popup_cond_div"), self, $S);
		};
		
		//将预置条件设置如查询表单中
		if (typeof popupBean.queryParam == "function"){
			$S("#popup_cond_div").jsonData(popupBean.queryParam());
		}else if(typeof popupBean.queryParam == "object"){
			$S("#popup_cond_div").jsonData(popupBean.queryParam);
		}
		popupBean.defaultParam && $S("#popup_cond_div").jsonData(popupBean.defaultParam);
		servicePath=bean.servicePath;
		initLeftTable();
		
		

	};
	
	/*
	  * 替换type='reset' 对initRender出来的combo重置不了
	 */
	page.reset=function(){
		$S("#popupSearchForm").ccayReset();
	}
	
	page.search=function(){
		if($.isEmptyObject($("#popupSearchForm").jsonData()) && (popupBean.allowEmptyCondition===false)){
			Ccay.UI.showMessage("ccay.popup.label.inputtip","warn");
			return;
		}
		$S("#leftGrid").ccayGridSearch();
	}


	
	/**
	 * @description 初始化数据集合grid
	 */
	function initLeftTable(){
	
		var options={
			
			selectRowByCheck:true,
			multiSelect:false,
			uniqueField : popupBean.uniqueKey,
			allowPersonalized:false,
			showGridMenu : false ,
			noPage:popupBean.noPage,
			pageSize:popupBean.pageSize || Ccay.UI.Config.pager.defaultSize,
			pageSizeList:popupBean.pageSizeList || Ccay.UI.Config.pager.pageSizes,
			autoLoad:!(popupBean.autoLoad===false) ,
			columns:[{id: 'chk',title:"Select" ,checkType:"radio",isCheckColumn : true,frozen:true}].concat(popupBean.columns),
			toolbarContent:"nav | goto | state",
			onRowDblClick:function(value,record){
				page.onOk(record);
			},
			onComplete:function(){
				if(popupBean.uniqueKey && popupBean.selectedItems){
					$("#leftGrid").find("input.gt-f-check[value='{0}']".formatText(popupBean.selectedItems)).attr("checked",true)
				}
			},
			beforeRowSelect:function(record,row, rowNo,grid){
				page.onOk(record);
			},
			operation:{
				search:{
					
					//查询条件区域id选择器
					panel:'#popupSearchForm',
					//查询请求地址
					url:servicePath+"/page/{0}/{1}",
					params:(typeof popupBean.queryParam == "function" ? popupBean.queryParam():popupBean.queryParam) || {}
				}
			}
			,pagerOp:{
				mode:null,
				showLast: popupBean.showLast!==false
			}

		};
		$S("#leftGrid").ccayGrid(options);
		
	}
	
	/**
	 *@description 点击确认按钮后执行
	 * 1 得到popupBean中指定的回调函数的引用。（如果得不到引用则终止该方法）
	 * 2 得到已选项目，此为js对象，通过回调函数的传参返回。
	 */
	page.onOk=function(record){
		if(record){
			popupBean.callback && popupBean.callback(record);
		}else{
			var datas=API().getSelectedRecords();
			if(datas && datas.length>0){
				popupBean.callback && popupBean.callback(datas[0]);
			}
		}
		page.closeDialog();
	};
	

	/**
	 * @description 通过参数动态生成条件区域dom
	 * @param {object[]} columns 列参数定义
	 * 
	 */
	function initConditionArea(columns,buttonPosition){

		var hasSearchColumn=false;
		var length=columns.length,autoWidth=true;
		$.each(columns,function(index,column){
			if(column.isCondition){
				hasSearchColumn=true;
				$S("#popup_cond_div").append($i18n(column.header)+" ");
				$S("#popup_cond_div").append("<input type='text' style='width:120px' name='"+column.id+"' maxlength='100'/>&nbsp;");
			}
			if(column.hidden)
				length--;
			if(column.width){
				autoWidth=false;
			}
		});
		if(length<=3 && autoWidth){
			$.each(columns,function(){
				this.width=parseInt(400/length);
			});
		}
		if(hasSearchColumn){
			var curDiv = "#popup_cond_div";
			if(buttonPosition){
				curDiv = "#btn_position";
				$S("#popup_cond_div").append("<div id='btn_position' style='margin:5px;'></div>")
			}
			$S(curDiv).append("<span id='btn_popup_single' class='default ccay-button' onclick='Ccay.Component.SinglePopup.search()'><a class='ccay-icon search'></a><label>"+$i18n("ccay.common.button.search")+"</label></span>");
			$S(curDiv).append("<span class='ccay-button' onclick='Ccay.Component.SinglePopup.reset()'><a class='ccay-icon reset'></a><label>"+$.i18n.prop("ccay.common.button.clear")+"</label></span>");
			switch(buttonPosition){
				case "left" :
					$("#btn_position>#btn_popup_single").css("margin-left","-2px");
					break;
				case "right" :
					$("#btn_position").css("text-align","right");
					break;
				default :
					$("#btn_position").css("text-align","center");
					break;
			}
		}
		//$S("#popup_cond_div").append("<input id='btn_popup_single' type='button' class='button default'  onclick='Ccay.Component.SinglePopup.search()'  value='"+$.i18n.prop("ccay.common.button.search")+"' />&nbsp;&nbsp;<INPUT  type='button' onclick='Ccay.Component.SinglePopup.reset()' class='button'  value='"+$.i18n.prop("ccay.common.button.clear")+"' />");
	};
});



